<!-- 视图复选框 -->

<template>
  <div class="Secure-MapView-checkbox">
    <CheckboxItem v-for="item in typeDict" :key="item[0]" :dict="item" class="auto" />
  </div>
</template>

<script>
// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'

// ============================== 导出组件 ============================== //

export default {
  /**
   * 名称定义 (实际使用名称)
   */
  name: 'ViewCheckbox',

  /**
   * 混入列表 (配置选项合并)
   */
  mixins: [CORE.mixWeb('map', 'map_')],

  /**
   * 组件导入 (Abc.vue + Abc/index.vue)
   */
  ...CORE.components(require.context('./', true, /vue$/)),

  /**
   * 计算属性 (慎用箭头函数)
   */
  computed: {
    /**
     * 消防类型字典
     */
    typeDict() {
      const { map_list } = this
      return map_list.reduce((dict, item) => {
        const matched = dict.find(([code]) => item.pointTypeCode === code)
        matched ? matched[2]++ : dict.push([item.pointTypeCode, item.pointTypeName, 1])
        return dict
      }, [])
    },
  },

  /**
   * 监听属性 (深度 deep 首次 immediate)
   */
  watch: {
    /**
     * 监听列表就绪
     */
    map_readyList() {
      this.map_param.checkboxList = this.typeDict.map((item) => item[0])
    },
  },
}
</script>
